/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javari.game;

import java.util.ArrayList;
import java.util.Collections;

/**
 *
 * @author Verner
 */
public class Computador extends Jogador {

    /*
     *Método que cria a inteligência artificial do jogo. Esse método recebe 
     * uma ArrayList com parâmetro. Essa arraylist possui as cartas da mão
     * do computador e outra ArrayList que é a lista de cartas da mesa.
     */
     
    public void IA(ArrayList<Carta> adv,ArrayList<Carta> mao, ArrayList<Carta> mesa, ArrayList<Carta> deck, ArrayList<Carta> grave){
        //PEGA UMA CARTA DO DECK E COLOCA NA MÃO DO COMPUTADOR
        Carta carta;
        Carta carta2;
        carta = deck.get(1);
        mesa.add(carta);        
        deck.remove(carta);
        
        //PEGA A MELHOR CARTA DA MÃO E COLOCA NA MESA DO COMPUTADOR
        carta = Busca_Maior_Ataque(mao);
        if(mesa.size()<3){//se o computador tiver menos de 3 cartas na mesa
            mesa.add(carta);
        }else if(mesa.size()>=3){
            carta2 = Busca_Menor_Ataque(mesa);
            mesa.remove(carta2);
            mesa.add(carta);
        }
        
        /*INICIAR A FASE DE ATAQUE DO COMPUTADOR. SELECIONAR A CARTA COM MAIOR ATAQUE NA MESA
         * E COMPARA COM O MAIOR ATAQUE DO ADVERSÁRIO. COMEÇA A FASE DE ESTRATÉGIA DO
         * COMPUTADOR. O COMPUTADOR MUDA TODAS AS SUAS CARTAS PARA O MODO DE DEFESA.
         */
        carta2 = Busca_Maior_Ataque(mesa);//computador
        for(int i=0;i<adv.size();i++){//percorre a lista de cartas do adversario e compara suas melhores cartas
            if(carta2.getAtaque()>adv.get(i).getAtaque()){
                adv.remove(i);
            }else{
                for(int j=0;j<mesa.size();j++){//muda o estado de todas as cartas para modo de defesa
                    mesa.get(j).setEstado(1);
                    break;
                }
            }
        }
    }
    
    //MÉTODO BUSCA A CARTA COM MAIOR ATAQUE DENTRO DA ARRAYLIST
    public Carta Busca_Maior_Ataque(ArrayList<Carta> a){
        Carta carta = new Carta();
        Integer valor = 0;
        for(int i=0;i<a.size();i++){
            if(a.get(i).getAtaque()>valor){
                valor = a.get(i).getAtaque();
                carta = a.get(i);
            }
        }
        return carta;
    }
    
    //MÉTODO BUSCA A CARTA COM MENOR ATAQUE DENTRO DA ARRAYLIST
    public Carta Busca_Menor_Ataque(ArrayList<Carta> a){
        Carta carta = new Carta();
        Integer valor = 0;
        for(int i=0;i<a.size();i++){
            if(a.get(i).getAtaque()<valor){
                valor = a.get(i).getAtaque();
                carta = a.get(i);
            }
        }
        return carta;
    }
    
    //MÉTODO BUSCA A CARTA COM MAIOR DEFESA DENTRO DA ARRAYLIST
    public Carta Busca_Maior_Defesa(ArrayList<Carta> a){
        Carta carta = new Carta();
        Integer valor=0;
        for(int i=0;i<a.size();i++){
            if(a.get(i).getDefesa()>valor){
                valor = a.get(i).getDefesa();
                carta = a.get(i);
            }
        }
        return carta;
    }
    
    //MÉTODO BUSCA A CARTA COM MENOR DEFESA DENTRO DA ARRAYLIST
    public Carta Busca_Menor_Defesa(ArrayList<Carta> a){
        Carta carta = new Carta();
        Integer valor=0;
        for(int i=0;i<a.size();i++){
            if(a.get(i).getDefesa()<valor){
                valor = a.get(i).getDefesa();
                carta = a.get(i);
            }
        }
        return carta;
    }
    
    //MÉTODO QUE EMBARALHA AS CARTAS DO JOGO.
    public ArrayList Embaralhar_Cartas(ArrayList<Carta> c){
        Collections.shuffle(c);
        return c;
    }
    
    
    
}
